{ "cells": [ { "cell_type": "markdown", "id": "49516829", "metadata": {}, "source": [ "# Finite Volume Method 개요" ] }, { "cell_type": "markdown", "id": "0beaca09", "metadata": {}, "source": [ "**강좌**: *기초 전산유체역학*" ] }, { "cell_type": "markdown", "id": "89a854f4", "metadata": {}, "source": [ "## 보존식에 대한 구성\n", "1차원 보존식 (Conservation Law)는 다음과 같다.\n", "\n", "$$\n", "\\frac{\\partial u}{\\partial t} + \\frac{\\partial f}{\\partial x} = 0.\n", "$$\n", "\n", "불연속한 해 $u$ 를 다루기 위해서 Control volume $[t^n, t^{n+1}] \\times [x_L, x_R]$ 에서 적분형 식을 고려한다.\n", "\n", "$$\n", "\\int_{t^n}^{t^{n+1}} \\int_{x_L}^{x_R} \n", "\\left (\\frac{\\partial u}{\\partial t} + \\frac{\\partial f}{\\partial x} \n", "\\right ) dx dt = 0.\n", "$$\n", "\n", "또는 다음과 같은 weak form을 고려하기도 한다.\n", "\n", "$$\n", "\\int_{0}^{\\infty} \\int_{-\\infty}^{\\infty} \n", "\\left (\n", "\\frac{\\partial w}{\\partial t} u + \\frac{\\partial w}{\\partial x} f\n", "\\right )\n", " dx dt = - \\int_{-\\infty}^{\\infty} w(x, 0) u(x, 0) dx\n", "$$\n", "\n", "여기서 $w(x,t)$ 는 smooth test 함수로, 무한한 시간 또는 무한한 공간 경계에서 값이 0 인 임의의 함수이다.\n", "\n", "첫번째 적분형 식에 대해 차분하면 유한체적법 결과를 얻을 수 있다.\n", "\n", "두번째 식을 활용하는 차분법은 유한요소법 또는 불연속 갤러킨 기법 등을 유도할 수 있다.\n", "\n", ":::{figure-md} FVM\n", "\n", "\n", "FVM\n", ":::\n", "\n", "여기서 격자 $I_i = [x_{i-1/2}, x_{i+1/2}]$, 시간 $t=t^n$ 에서 근사해 $U_i^n$는 다음과 같다.\n", "\n", "$$\n", "U_i^n \\approx \\frac{1}{\\Delta x_i} \\int_{I_i} u(x, t^n) dx,\n", "$$\n", "\n", "여기서 $\\Delta x_i = x_{i+1/2} - x_{i-1/2}$ 이다.\n", "\n", "위 보존식을 공간에 대해 적분하면 다음과 같다.\n", "\n", "$$\n", "\\frac{d}{dt} \\int_{I_i} u(x, t) dx = -( f(u(x_{i+1/2}, t) - f(u(x_{i-1/2}, t))\n", "$$\n", "\n", "$[t^n, t^{n+1}]$ 구간에 대해 시간 적분을 적용하면 다음과 같다.\n", "\n", "$$\n", "\\int_{I_i} u(x, t^{n+1}) dx - \\int_{I_i} u(x, t^n) dx\n", "=\n", "- \\left (\\int_{t^n}^{t^{n+1}} f(u(x_{i+1/2}, t) dt \n", "- \\int_{t^n}^{t^{n+1}} f(u(x_{i-1/2}, t) dt \\right ). \n", "$$\n", "\n", "여기서 Flux에 대한 적분을 다음과 같이 근사화 하면\n", "\n", "$$\n", "F^n_{i+1/2} \\approx \\frac{1}{\\Delta t} \\int_{t^n}^{t^{n+1}} f(u(x_{i+1/2}, t) dt,\n", "$$\n", "\n", "시간 $[t^n, t^{n+1}]$과 격자 $I_i$ 에 대해 적분한 보존식은 다음과 같이 표현할 수 있다.\n", "\n", "$$\n", "U_i^{n+1} = U_i^n - \\frac{\\Delta t}{\\Delta x} \\left (\n", "F^n_{i+1/2} - F^n_{i-1/2}\n", "\\right )\n", "$$\n", "\n", "격자 경계에서는 Riemann Problem을 풀어서 Flux $F_{i+1/2}^n$ 을 계산한다.\n", "\n", "$$\n", "u(\\hat{x}/\\hat{t}) = \\left \\{\n", "\\begin{array}{cc} \n", "u_L & \\hat{x}/\\hat{t} < \\lambda \\\\\n", "u_R & else \n", "\\end{array}\n", "\\right .\n", "$$\n", "\n", "여기서 $\\hat{x}, \\hat{t}$ 는 $t=t^n$ $x=x_{i+1/2}$ 기준 국소적인 시간과 공간 좌표이다. $\\lambda$ 는 Characteristics의 속도이다." ] }, { "cell_type": "code", "execution_count": 1, "id": "2b5071fd", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from matplotlib import pyplot as plt\n", "\n", "import numpy as np\n", "\n", "plt.style.use('ggplot')\n", "plt.rcParams['figure.dpi'] = 150" ] }, { "cell_type": "code", "execution_count": 2, "id": "ef3642ad", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, '$\\\\hat{x}$')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/LhOnz6ty5cvKyQkRL1799a3vvUt3X777YqPj/fypwEAANfidEpz58YpN7f+T5ygIKdWry5SbCz3bQEwh+UDl1QfutLS0pSWltbivqmpqUpNTW20PjExUdOmTfNGeQAAwCDr1kXqnXfC3cvz5pVq5MgaEysC4O8sfQ8XAADwH0ePBmvJkhj38oQJlXrooXITKwIAAhcAALCAy5dtevjheFVX19+olZBQp5UrixXAXzoATMaPIQAA0KU5ndK8ebE6e7b+TgmbzalVq4rUvbvD5MoAgMAFAAC6uD/9KVzbtkW4l9PTL+vmm6tNrAgAriJwAQCALuvkySDNnx/rXr7ppiqlp5eZWBEAeCJwAQCALunKFWnGjHhVVtb/ORMfX6cXXihSkF/MwQygqyBwAQCALmnhwlidOBHsXl65slh9+nDfFgDfQuACAABdzptvhmnjxkj38k9+clnf+laViRUBQNMIXAAAoEvJyQnUz34W514eMaJaTz1Val5BAHANBC4AANBlVFfX37dVVlb/J0xUlEOrVxcpJMTkwgCgGZ0SuN544w199NFHnfFWAADAwhYsCNBHH11NV7/6VbESE+tMrAgArq3DgevQoUMt7vOnP/1Jq1ev7uhbAQAAP7Zzp00rVwa6l++9t1zf/W6liRUBQMvaHbjKy8v1/PPP65lnnjGyHknSRx99pMLCQsOPCwAAuqbc3ABNn341bCUn12jRohITKwKA1mnXkyoOHjyoV155RZcvX9b9999vdE168cUXVVpaqj/+8Y+GHxsAAHQttbXS7NnxKiy0SZLCwhxas6ZI4eEmFwYArdDmwPXOO+/od7/7nRISEvTkk09q0KBBjfZ59913lZWVpeuvv15DhgxpV2FOp7NdrwMAANaycmW09u0LdS8vWVKqpKRaEysCgNZrc+AqKakfvp8wYUKTYUuSCgsL9e677+rdd991r7t8+bJefPFFDRw4UAMHDtSAAQMU3sRXU06nUxUVFQoMDGy0DQAA+Je9e0O0cmWUezktzaHvf7/CxIoAoG3aHLi+/vWv69ChQ/rDH/6gs2fP6uGHH1ZYWJjHPl/+8peVl5enrKwsXbx4UZJUW1ur999/X++//74kyWazKSEhQQMGDHAHsG7dumnfvn2qqalRr169DPh4AACgqyosDNDs2fFyOusvJRw82KkXX6xTFc83BtCFtDlw9evXT8uWLdO2bdv0xhtvKDs7W7/5zW889klOTlZycrKk+pGt6dOnKywsTDfddJPOnj2rc+fOqa6uThcvXtTFixe1b9++Ru8zZsyYdn4kAADQ1TkcUnp6nPLy6q94CQ52auPGWsXESAUFJhcHAG3QrkkzAgICdNddd2nMmDFas2bNNfeNiqq/DCAsLEwzZsyQVD/ade7cOWVnZ+vs2bPKzs5WTk6OqqqqFBISoq997Wv6/ve/357SAACABbz8cqTefffqFTQLFpRq5MgIEysCgPZpV+By+cIXvqClS5e2uN9vfvMbXbhw4eqbBgW57+Vq6PLly4qMjJTNZutIWQAAoAs7ciRYy5bFuJdvvfWKpk8vl0TgAtD1dChwSfWjXS3p3bu3evfu3eJ+rtEwAADgn0pKbJo5M161tfVfvvbpU6df/7pYfBcLoKtq94OPAQAAjOR0Sk88Eadz5+q/Dw4MdGr16iJ168ajYgB0XQQuAADgE15/PUJ/+cvVR8Y89liZUlKqTawIADqOwAUAAEx37FiQnn461r18881VeuSRyyZWBADGIHABAABTVVTYNGNGvKqq6m/U6t69TqtWFSkw0OTCAMAABC4AAGCq+fNjdepUsHt51apiJSQ4TKwIAIxD4AIAAKbZujVcmzdfne79kUfKNG5clYkVAYCxCFwAAMAUp08Hat68q/dtjRpVrccfLzOxIgAwHoELAAB0uspKacaMbqqoqP9TJDbWodWrixQc3MILAaCL6fCDj7uC6upqbd++XXv37pXdbldUVJSGDx+utLQ0de/evVXHKC8v1wcffKDDhw/r7Nmzstvtstlsuu666zR27FjdeuutCgryi3YCANBhS5fG6JNPrqarZ58t1nXX1ZlYEQB4h+UTQnV1tRYvXqzMzEzFx8dr9OjRKigo0HvvvacjR45oyZIl6t27d4vHeeutt/TGG2/IZrNp4MCBGjVqlEpLS5WZmalTp05p3759mj9/vkJDQzvhUwEA0HVlZIRp3boo9/J995Vr0qRKEysCAO+xfODatm2bMjMzlZSUpAULFigsLEyStGPHDr322mtas2aNFi1a1OJxwsLCdMcdd+i2225Tt27d3OsvXLigxYsX68SJE9q6davuuecer30WAAC6uvPnAzV3bpx7+YYbavTzn5eYVxAAeJml7+Gqra1VRkaGJGn69OnusCVJ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Ltdw1/osI0eOVHBwsI4eParq6uoOvc/7778vSfqv//qvLnfvUFt1Vk/bWwPnaNNsNpv69+8vSSoqKurQscx24sQJlZeXKyEhQQMHDmy03RVcW3OpzAcffCCn06mhQ4c2+oMjODhYo0aNksPh0Icffuhen5+fr/PnzyskJEQjR45sdEzXv+Xnf7b6KiP7eS2uS4a7+vnXGp3V0+ZwjrZdfn6+MjMzFRQU5P77CK1jpZ+jXFKINisvL5fdbpekJu+N6d69u6Kjo1VQUKCKigr3NeA5OTmS1OQPNdf6vLw85eTkqFevXt4p3iCffvqpJGnQoEGNtgUFBekLX/iCTp8+rdzc3CZ71BrV1dXub2D+67/+q9n9SkpKtHnzZhUVFSkiIkLXX3+9Ro8e3eQN5L7MWz09c+aMXn/9dV25ckVxcXEaNmyYhg4d2uS+nKPt4wqgzX2T2VXO0Zb+/V29dO3XkWMNHDhQu3btck84JMn93/3792+yN65jteb9fYGR/byWvLw8Sc2ff5K0f/9+7d+/Xw6HQ7169dKoUaOanAzC13mrp2+++aYuXryo4OBg9e/fXykpKU1eHsw52nauL05HjhypqKioZvezyjlqJCv9HPWt33boElxhKzIy0mP4vaHu3burrKxMdrtdX/jCFzxe19yMP65LRVz7+aqKigqVl5dLUqPLW1y6deum06dPy263t/uP2QMHDujKlStKTExscgY4l88++0xbtmzxWNejRw89+uijXebGZW/29MiRIx6Xum3ZskVDhw5Venp6oz/QOEfb7sSJEzpz5oyCgoKanBhD6jrnqJH//q59muu/6z0aHqul92/qNb6ss/5/2rlzpyRp9OjRze7jumzMZePGjfrv//5v3X///V3mXiPJez3dsGGDx/L69et1//33a8KECW16f87Rxvbs2SOp5csJrXKOGslKP0cJXGizyspKSWp2NqiG21z7tuZ1rvDW8DW+qGF9zX2Wpj5/W7mu+W5udCs4OFi33nqrvv71r6tfv34KDg7W+fPntXXrVn3wwQf6xS9+oV/+8pc+PxIjeaencXFxuvvuuzVmzBj16tVL1dXVOnXqlDZu3Khjx45p+fLl+sUvfuFxqSbnaNtUVFRozZo1kqRvf/vbio+P99je1c5RI//9WzqWa31VVVWj14SEhFzzNb5+/rl0xv9P77zzjo4eParIyMgmH3EycOBAJSUladiwYerevbuKi4v1wQcf6I9//KPeeecdBQUF6b777mv3+3c2o3vqmjhn0KBBiomJUV5ennbt2qWdO3dq7dq1ioqKUkpKSqP35xxtnVOnTik3N9c9U15TrHaOGslKP0cJXF3Er3/9a507d65Nr3nkkUc0ZMgQw2txOp2SZPjU2K7jdgZf6mdTSktL9fHHH8tms2ns2LFN7hMfH68HH3zQY11SUpKeeuopPf/889qzZ4+2bdumhx56qDNK9rmejhgxwmPEJSIiQqNHj9awYcP05JNP6syZM/rnP//ZbH+bwjl6lcPh0PPPP68LFy5oyJAhSktLa7SPr52jLWnp37ct//4d+TnZVR470BIj+9mUY8eO6dVXX5XNZtOMGTOa/Bb8848n6dWrl2677TZ96Utf0rx585SRkaHJkyerR48eHaqlsxjd0wceeMBjuX///po2bZr69u2rl19+WRs3bvQIXC6co63jupzw61//erOXUFvtHDWSlX6OEri6iIKCAuXm5rbpNQ0Tv5HCw8MlXfvbAdd7N7zkMCwsTOXl5c3W1dRrvKUj/WxYX1VVVZPPKenoZ9mzZ4/q6ur0la98pdmh9Gu54447tGfPHn300Uftev/28PWeuoSFhen222/XunXr9OGHH3oELs7R1nvppZd05MgR9e3bV/PmzWvz/VhmnKMtcf1sM+Lfv6Wfk65jNfzm1nVcXzj/jGBkPz8vJydHzzzzjGpra3X//fc3GQqu5Qtf+IJGjx6tffv26ejRo13iUQ+Sd3va0IQJE/SnP/1JFy5cUH5+vnsUmnO09erq6vSvf/1LUvtmJ+yq56iRrPRzlMDVRSxfvtzsEtxc37KUl5ersrKyyZO2sLDQY1/Xf5eXl6uwsLDJe5IuXbrU6DXe0pF+RkREKCIiQhUVFbp06VKTf8x29LO0dDlhS1zPP+vMWbt8vacNufrz+alkOUdb5/XXX9euXbvUvXt3LViwoMmb61tixjnaElcvXD+/Pq8tPXPt43rN5zX3M/Ja79/Ua3yZkf1s6OLFi1q6dKnKy8t199136/bbb29Xfa6H2frSOdgSb/X08wICApSQkKCSkhIVFRW5AxfnaOt99NFHKikpUUJCgr74xS+2q76ueI4ayUo/R609zzS8IjIy0n2iNpwZxqWwsFBlZWXq0aOHxx96rj9gs7Ozmzyua/21JojwFa4am3o2R21trT799FMFBwe36wnxubm5On36tEJDQz2en9QWly9fltR1vmWUvNvTz3NNKPH5/nCOtmzbtm166623FBsbq5///Oft/qXli+doS//+rl625t+/PeeSa/KSc+fOqba2ttnXuCYi8nVG9tPl0qVLWrJkiYqLizVp0iTdfffd7a6vuZ8DvswbPW1OU/3hHG29jn5xKnXNc9RIVvo5SuBCu7hu/ty3b1+jba4h9M/fIHqt12RnZysvL0/XXXedz9xAfy3X+ixHjhxRTU2Nhg0b1uxNm9fi+iE9ZsyYdv+Q3b9/v6SmpwT3Vd7s6ee53uPz/eEcvba///3v+sMf/qDIyEjNnz+/Q+HXF8/R5ORkRUREKC8vr8lf8K6am7v5vaERI0bIZrPp+PHjKikp8dhWU1Ojw4cPy2az6atf/ap7fa9evdSvXz9VV1c3+RBp17/lqFGj2vS5zGJkP6X6kL506VLl5+dr/Pjx+tGPftTu2mpqatw99qVzsCVG97Q5586dU25urkJDQz2mJuccbZ3Kykr3s7vaG7i66jlqJCv9HCVw4ZrS09OVnp7eaDh30qRJCggI0N/+9jedPHnSvf7ChQvatm2bAgICGt0ImpKSol69eiknJ8f9FHCp/gfT7373O0n1T3bvCr75zW8qPDxchw4dcv9AluqfN+SaXrepz9JcPxtq7RSyu3fvbnLIfP/+/dq0aZMk6bbbbmv5w/gIo3u6c+fORtd919bW6s9//rP27dunkJAQjR8/3mM752jz/dy3b59++9vfKiwsTE899VSrppLvaudoUFCQJk6cKElat26dx/mzY8cO5eTkKDk52WNikoyMDKWnp7s/j0t8fLxuvvlm1dbW6pVXXlFdXZ1724YNG1RaWqqxY8c2ejSB699k48aNHn9g7N+/X4cOHVKvXr00ZswYwz6zNxnZz6qqKi1btkznzp3T1772NT388MMt3hSfm5urgwcPyuFweKwvLS3VypUr3ZcOt/dyLzMY2dMPP/ywyRHwnJwcrVixQk6nUxMmTGh0fybnaNP9bGj//v2qqqrS9ddf7758uilWPEfbwx9+jnIPlx955pln3PesuP4I+utf/+p+uG5cXJyeeOIJj9e4btr//LBs37599cMf/lCvvfaaFi5cqK985SsKDAzUxx9/rOrqavcsRw0FBQVp9uzZWrx4sV577TX961//Uo8ePXTixAkVFRVpzJgxjf4A9lVRUVGaMWOGnnvuOa1YsUJDhw5VdHS0jh49qvLyct1+++368pe/3Oh1zfXTJTMzU3l5eYqLi9NXvvKVa9awa9curV69Wv369VPPnj0VHByszz77TJ999pkk6Tvf+U6bbyQ3k9E9ffXVV7Vp0yZdd9116tGjh2pqanT27FkVFRUpODhYs2fPbjQhCedo0/0sKSnR888/L6fTqV69eulvf/ub/va3vzV67ZgxYzzOua54jt555506evSoMjMzNWfOHCUnJ8tutysrK0vR0dGaOXOmx/6lpaXKzc1t8h6L++67T1lZWdq/f7/S09M1ePBgnTt3TufOnVNCQkKTIzS33HKLPvjgAx04cEDp6en68pe/rLKyMh07dsx93vraA6Ovxah+/uEPf1BWVpYCAgIUGBjofhzB582aNcv930VFRXrmmWcUHR2tvn37qlu3biotLdWZM2d05coVde/eXY8++qjPzWbWEqN6evLkSW3ZskU9e/ZUQkKCYmJilJ+fr+zsbNXV1Wno0KG65557Gr0/52jz/8+7uK5UaemLU6ueo0eOHNHWrVs91tXW1mr+/Pnu5bvuuss9cugPP0e7zv8R6LCzZ8+qoKDAY11hYaE7fPXs2bNNx5s8ebJ69+6tt956S8ePH5dUP+z9ne98p9kHUH7xi1/UsmXLtHnzZh07dkxnz55VQkKCJk+erG9/+9sez0TydTfddJMWLVqkN954Q1lZWaqtrVW/fv102223tXs2IdcP6ZtvvrnFXnzzm99UTEyMzp49qxMnTqi6uloxMTFKSUnRrbfe2mJg80VG9vR73/ueTp48qc8++0znz5+X0+lU9+7d9a1vfUuTJ09u9nI4ztHGqqqq3AHs008/1aefftrkfj179vQIUF3xHA0JCdHChQu1bds27dmzRwcPHlRkZKTGjRuntLS0Nt2zFhMT4z6XDh48qAMHDig2NlYTJ05UamqqoqKiGr0mICBAc+fO1c6dO7Vr1y4dPnxYYWFhGjNmjNLS0tS/f38jP67XGdVP170sDofDfRVAUxoGrj59+mjSpEnKyspSXl6eTp06peDgYPXp00ejRo3SpEmTmvw38HVG9XTEiBEqLCzU6dOnlZOTo4qKCoWHhys5OVljx47VLbfc0uTPO87RaysqKtK///1vBQYG6utf//o197XqOVpaWqqsrCyPdU6n02NdaWlpq45llZ+jNmdnPlgGAAAAAPxI1/mqFgAAAAC6GAIXAAAAAHgJgQsAAAAAvITABQAAAABeQuACAAAAAC8hcAEAAACAlxC4AAAAAMBLCFwAAAAA4CUELgAAAADwkiCzCwAAwMrOnz+vf/7zn4qLi9Ott95qdjkAgE5G4AIAwEvq6uq0atUqZWdnS5Li4uKUkpJiclUAgM7EJYUAAHjJ9u3blZ2drR/84AdKSEjQb3/7W12+fNnssgAAnYjABQCAF3z66afaunWrbrrpJt1xxx169NFHVV5ernXr1pldGgCgExG4AAAwmMPh0Jo1a9S9e3c9/PDDkqRBgwZp2rRp2rNnjw4ePGhyhQCAzmJzOp1Os4sAAAAAACtihAsAAAAAvITABQAAAABeQuACAAAAAC8hcAEAYIATJ04oNTVVqamp+te//tXkPllZWZo6dapSU1O1YcOGTq4QAGAGAhcAAAZITk7W6NGjJUmbN2+Ww+Hw2J6bm6vly5erqqpK48aN07333mtGmQCATkbgAgDAIPfcc48CAgL02Wef6f3333evv3TpkpYuXaqysjKNHDlSDz/8sGw2m4mVAgA6C4ELAACDXHfddRo/frwkacuWLaqtrVV5ebl+8YtfqKCgQMnJyZo7d64CAwPNLRQA0GmCzC4AAAArSU1N1Z49e5Sfn6+//vWvOnDggD799FN94Qtf0JNPPqmQkBCzSwQAdCIefAwAgME2btyo//3f/3Uv9+zZU4sXL1a3bt1MrAoAYAYuKQQAwGCTJk1y36MVFRWlBQsWELYAwE8RuAAAMFBdXZ1eeukluS4gqaqq4jJCAPBjBC4AAAzidDq1du1aHTlyRDExMerVq5dqamq0efNms0sDAJiEwAUAgEE2bNig3bt3KywsTPPmzdP3v/99SdLu3bt1/vx5k6sDAJiBwAUAgAHefPNNvfXWWwoMDNRjjz2mIUOG6Oabb1ZiYqIcDoc2bdpkdokAABMQuAAA6KDdu3dr48aNstlsmjVrloYPHy5JstlsSktLkyQdOnRIJ06cMLNMAIAJCFwAAHTAkSNHtHbtWjmdTk2bNk1jx4712D569Ghdf/31kuqniwcA+BcCFwAA7XTy5Ek999xzqqur03e/+119+9vfbnI/171cmZmZOnjwYGeWCAAwGQ8+BgAAAAAvYYQLAAAAALyEwAUAAAAAXkLgAgAAAAAvIXABAAAAgJcQuAAAAADASwhcAAAAAOAlBC4AAAAA8BICFwAAAAB4CYELAAAAALyEwAUAAAAAXkLgAgAAAAAvIXABAAAAgJcQuAAAAADASwhcAAAAAOAlBC4AAAAA8BICFwAAAAB4CYELAAAAALyEwAUAAAAAXkLgAgAAAAAv+f8BOdzPSQbvAs8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(-1, 1, 101)\n", "u = -np.tanh(1e8*x) + 1.5\n", "t = np.linspace(0, 0.5, 101)\n", "\n", "fig, axs = plt.subplots(2, 1, sharex=True)\n", "axs[0].plot(x, u)\n", "axs[0].set_xlim(-1.1, 1.1)\n", "axs[0].set_ylabel('u')\n", "axs[0].set_xlabel('$\\hat{x}$')\n", "\n", "a = 1\n", "xs = a*t\n", " \n", "# Characteristics\n", "axs[1].plot(xs, t, color='blue')\n", "\n", "axs[1].set_ylabel(r'$\\hat{t}$')\n", "axs[1].set_xlabel(r'$\\hat{x}$')" ] }, { "cell_type": "markdown", "id": "75ec09a4", "metadata": {}, "source": [ "Godunov (1959) 는 최초로 유한체적법을 제안했으며, Exact Riemann problem을 해석하는 Flux 기법을 Godunov method 라고 부른다.\n", "\n", "Euler 방정식과 같이 비선형 방정식에서 Exact Riemann problem을 해석하는 것은 매우 어려우며, \n", "이를 근사적으로 푸는 다양한 기법들이 개발되었다. 근사화된 Flux (Numerical Flux)는 다음과 같다.\n", "\n", "$$\n", "F_{i+1/2}^n = \\mathcal{F} (U_i^n, U_{i+1}^n).\n", "$$\n", "\n", "그러므로 유한체적법에서는 보존식을 다음과 같이 해석한다.\n", "\n", "$$\n", "U_i^{n+1} = U_i^n - \\frac{\\Delta t}{\\Delta x} \\left (\n", "\\mathcal{F} (U_i^n, U_{i+1}^n) \n", "- \\mathcal{F} (U_{i-1}^n, U_{i}^n)\n", "\\right )\n", "$$\n", "\n", "이 결과는 유한차분법에서 구한 결과와 같은 형태이다." ] }, { "cell_type": "markdown", "id": "eccab00d", "metadata": {}, "source": [ "## Convergence\n", "수치적으로 계산한 결과과 이론적으로 구한 해에 수렴하려면 Consistency와 Stability를 만족해야 한다.\n", "\n", "- Consistency : 국소적으로 근사식이 실제 방정식을 잘 근사해야 함\n", "- Stability : 오차가 증폭되지 않아야 함\n", "\n", "### Consistency\n", "유한체적법에서는 수치 Flux가 이론식에서 Flux를 잘 근사화해야 한다. 같은 값을 갖는 유동에서는 수치 Flux가 이론 Flux와 같아야 한다.\n", "\n", "$$\n", "\\mathcal{F}(\\bar{u}, \\bar{u}) = f(\\bar{u}).\n", "$$\n", "\n", "이를 일반화해서 표현하면 다음과 같이 `Lipschitz continuity`로 표현할 수 있다.\n", "\n", "$$\n", "\\mathcal{F}(U_i, U_{i+1}) - f(\\bar{u}) \n", "\\leq\n", "L \\max \\left (\n", "|U_i - \\bar{u}|, |U_{i+1} - \\bar{u}|\n", "\\right ),\n", "$$\n", "\n", "여기서 $L$ 은 상수이다.\n", "\n", "### CFL 조건\n", "안정성을 확인하는 방법은 유한차분법에서 확인한 것 과 같은 방식으로 구할 수 있다. \n", "수치 안정석을 만족하는 결과는 CFL 조건으로 정리할 수 있다.\n", "\n", "- CFL 조건\n", " 수치적이 Domain of Dependence가 이론 방정식의 Domain of Dependence를 포함해야 한다.\n", " \n", "파동의 전파 속도가 $a$ 인 선형 파동 방정식의 경우\n", "\n", "$$\n", "X - \\Delta x \\le X - a \\Delta t \\le X + \\Delta x\n", "$$\n", "\n", "즉\n", "\n", "$$\n", "CFL = \\left |\n", "\\frac{a \\Delta t}{\\Delta x}\n", "\\right | \\le 1.\n", "$$" ] }, { "cell_type": "markdown", "id": "ffbb5acd", "metadata": {}, "source": [ "## Some Numerical Fluxes\n", "\n", "### Unstable Flux\n", "가장 간단한 평균값으로 구하는 Flux이다.\n", "\n", "$$\n", "F_{i+1/2}^n = \\mathcal{F} (U_i^n, U_{i+1}^n) = \\frac{1}{2} \n", "\\left [\n", "f(U_i^n) + f(U_{i+1}^n)\n", "\\right ].\n", "$$\n", "\n", "이를 적용하면\n", "\n", "$$\n", "U_i^{n+1} = U_i^n + \\frac{\\Delta t}{2 \\Delta x} \\left (\n", "f(U_{i+1}^n - f(U_{i-1}^n\n", "\\right ).\n", "$$\n", "\n", "즉 유한 차분법에서 FTCS와 같다. 이 기법은 CFL 조건을 만족하지 않아 불안정하다.\n", "\n", "### Upwind Method\n", "유한체적법에서 유동의 전파 특성을 고려해서 One-side 차분식을 적용해서 Upwind 기법을 개발하였다.\n", "이 Flux 기법 역시 유한체적법으로 구현할 수 있다.\n", "\n", "$$\n", "F_{i+1/2}^n = \\mathcal{F} (U_i^n, U_{i+1}^n) = \\frac{1}{2} \n", "\\left [\n", "f(U_i^n) + f(U_{i+1}^n)\n", "\\right ]\n", "- \\frac{1}{2} |a_{i+1/2}| \\left (\n", "U_{i+1}^n - U_i^n\n", "\\right )\n", "$$\n", "\n", "여기서 $|a_{i+1/2}|$ 는 Wave speed 이다.\n", "\n", "- 1차 정확도를 갖는다\n", "- $CFL \\le 1$ 에서 수치적으로 안정하다." ] }, { "cell_type": "markdown", "id": "b1ad77bc", "metadata": {}, "source": [ "## 경계 조건\n", "유한 체적법에서는 일반적으로 경계면에서 반사된 가상의 격자 (Ghost Cell)을 추가하고 여기에 값을 부여한 후 Flux를 계산한다.\n", "\n", "### Transparent condition\n", "Wave가 계산 영역을 지나가는 경우 경계에서 값이 유지된다고 생각한다.\n", "\n", "$$\n", "U_0^n = U_{1}^n, U_{M+1}^n = U_{M}^n.\n", "$$\n", "\n", "### Periodic condition\n", "Sine wave와 같이 주기를 갖는 해를 계산하는 경우 다음과 같이 경계 조건을 부여한다.\n", "\n", "$$\n", "U_0^n = U_{M}^n, U_{M+1}^n = U_{1}^n.\n", "$$" ] }, { "cell_type": "markdown", "id": "573852fe", "metadata": {}, "source": [ "#### 계산 격자 구성, Solution array 구성\n", "계산 영역을 $n_x$개의 격자로 나누어보자.\n", "\n", "유한 체적법의 각 격자의 중심점은 다음과 같다.\n", "\n", "$$\n", "x_j = -1 + 1/2 \\Delta x , -1 + 3/2 \\Delta x, -1 + 2 \\Delta x, ..., 1 - 1/2 \\Delta x, ~~(1 \\le j \\le n_x )\n", "$$\n", "\n", "\n", ":::{figure-md} Grid\n", "\n", "\n", "Grid\n", ":::\n", "\n", "첫번째 및 마지막 경계에서 Flux를 계산하기 위해서는 $x_0 = -1 - 1/2 \\Delta x$ 와 $x_{n_x+1} = 1 + 1/2 \\Delta x$ 값이 필요하다. 이를 Ghost Cell로 구성하며, Solution array의 크기는 $n_{x}+1$ 로 한다.\n", "\n", "대칭 경계조건으로 구현하면 다음과 같다.\n", "\n", "$$\n", "u_0^n = u_{n_x}^n \\\\\n", "u_{n_x+1}^n = u_1^n\n", "$$\n", "\n", "Transparanet 경계 조건을 구현하면 다음과 같다.\n", "\n", "$$\n", "u_0^n = u_1^n\\\\\n", "u_{n_x+1}^n = u_{n_x}^n\n", "$$" ] }, { "cell_type": "markdown", "id": "43544717", "metadata": {}, "source": [ "## 예제\n", "다음 선형 파동 방정식을 생각하자.\n", "\n", "$$\n", "\\frac{\\partial u}{\\partial t} + \\frac{\\partial f}{\\partial x} = 0.\n", "$$\n", "\n", "이 방정식에서 Flux는 $f=au$ ($a=1$) 이다.\n", "\n", "계산 영역은 $[-1,1]$ 이다. $u(x,0) = \\sin(\\pi x)$ Periodic 경계조건 인 경우 $t=1.2$ 인 경우 다음과 같다.\n", "\n", "이때 완전해와의 차이는 $L^2$ norm으로 구한다.\n", "\n", "$$\n", "L2 Error = \\sqrt{\\frac{1}{N} \\sum_1^N (u - u_{exact})}\n", "$$ " ] }, { "cell_type": "code", "execution_count": 3, "id": "6b101271", "metadata": {}, "outputs": [], "source": [ "def unstable(nx, u, f, a):\n", " for j in range(nx+1):\n", " f[j] = (a*u[j] + a*u[j+1])/2\n", "\n", " \n", "def unstable_v1(ul, ur, a):\n", " fl = a*ul\n", " fr = a*ur\n", " \n", " return 0.5*(fl + fr)" ] }, { "cell_type": "code", "execution_count": 4, "id": "a1a7fba0", "metadata": {}, "outputs": [], "source": [ "def bc_periodic(u):\n", " u[0] = u[-2]\n", " u[-1] = u[1]" ] }, { "cell_type": "code", "execution_count": 5, "id": "71061893", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.08892642395307625\n" ] }, { "data": { "image/png": "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oBv6BrphboweP6SVYe/lEqSXmB8ae7NGwtepxfg6tRjhXk4I8tDA300DPzc1/N3U8HPTmP7vqmn+ClO1TkJ6idaQCJVokV5cjfQSLcprpEbXEQXg3mh/xPdwR08/V0U+O9kXJkdERERE1GE8nFV4oLehoMHFwmrsu1yCn9LK6pXIziyrqTcN73buGtGUOBmSJw18XdUoqqpF2q2rQrk3a9HSR9FqRAETenjjmdHRCPdxRX5+fjs/JdkrJkdERERE1OEEQUBvf1f09nfFr2MC8WNaGfZdLsGVIm2z61bUSqgo1SK9tPllLeniqkY3H2d0vfXfkFB3+LioEeDDq0V3OiZHRERERNSp3DQq3N/TF/f39MX1Ei0yyrQorNShsFKHgsraW/82/F/f0stBAJxVgikB6uZrTIZc4OWsst6HIbvG5IiIiIiIbEakjzMiGynIoJdklGr1KKysRUGdhKmgQoeiqlp4OqtNSVA3H2cEeWggspgCtQKTIyIiIiKyCypRQBdXNbq4qtHTr7N7Q46IT7AiIiIiIiICkyMiIiIiIiIATI6IiIiIiIgAMDkiIiIiIiICwOSIiIiIiIgIAJMjIiIiIiIiAEyOiIiIiIiIADA5IiIiIiIiAsDkiIiIiIiICACTIyIiIiIiIgBMjoiIiIiIiAAwOSIiIiIiIgLA5IiIiIiIiAgAkyMiIiIiIiIATI6IiIiIiIgAMDkiIiIiIiICwOSIiIiIiIgIAJMjIiIiIiIiAEyOiIiIiIiIADA5IiIiIiIiAgCoO7sDjkAQBIfc152EcbUextY6GFfrYFytg3G1HsbWOhhX67B2XJXYviDLsqxAX4iIiIiIiOwap9URERERERGByZHdWLhwIRYuXNjZ3XA4jKv1MLbWwbhaB+NqHYyr9TC21sG4Woc9xZX3HNmJmpqazu6CQ2JcrYextQ7G1ToYV+tgXK2HsbUOxtU67CmuvHJEREREREQEJkdEREREREQAmBwREREREREBYHJEREREREQEgM85IiIiIiIiAsArR0RERERERACYHBEREREREQFgckRERERERASAyREREREREREAJkdEREREREQAmBwREREREREBYHJEREREREQEgMkRERERERERAEDd2R24E1VXVyM5ORmXL1/GpUuXkJ6eDp1Oh8ceewzTp09v83aPHz+Or776CmlpaQCAbt26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N1g3Li6u3viz1/H60EMP4cyZM0hNTcWLL76IPn36oKCgAJcuXYKnpyeef/75esuXlZUhKyvL4tz/OXPm4NKlS0hKSkJCQgJ69OiBjIwMZGRkICgoyOLVjnHjxuHEiRNITk5GQkICBg4ciPLycpw7d840hm3xAbotoVRsP//8c1y6dAmiKEKlUplKyt9u3rx5pn8XFxdj1apV8PT0RGhoKLp06YKysjJcvXoVVVVV8PPzw0svvWSXVdeUiuvFixexdetWBAQEICgoCF5eXsjLy8O1a9eg1+vRr18/PPbYYw3276hjVsljgZFxpkhzX4Y68nhNSUnBtm3b6rXpdDq8+uqrptcPP/yw6aqcIx1j7e+3wEGkpaUhPz+/XlthYaEpUQoICGjV9qZOnYrg4GDs3LkT58+fB2C4jDtt2rRGH7LXu3dvrFixAlu2bMG5c+eQlpaGoKAgTJ06FQ888EC9Z8zYkxEjRmDJkiXYvn07Ll26BJ1Oh7CwMEyePLnN1WKMB8rRo0c3G5cJEybAy8sLaWlpuHDhAmpqauDl5YVhw4Zh0qRJzSZXtkrJuD7yyCO4ePEibty4gczMTMiyDD8/P0ycOBFTp05tdCqYI45ZpeKq1WpNydL169dx/fp1i8sFBATUS3bsdbw6OTlh8eLF2LFjBw4dOoSjR4/C3d0d99xzD2bNmtWq+6y8vLxM4+ro0aNITk6Gt7c37r//fsycORMeHh4N1hFFEQsWLMCuXbtw4MABHD9+HC4uLoiLi8OsWbMQERGh5MftUErF1ni/hSRJpivvltRNjkJCQhAfH49Lly4hNzcXly9fhkajQUhICGJiYhAfH2/x52EPlIrr4MGDUVhYiCtXriA9PR2VlZVwdXVFnz59MGbMGIwbN87isdBRx6ySxwLAkPCcPXsWKpUKo0aNanJZRx6vZWVluHTpUr02WZbrtZWVlbVoW/Z2jBXkznqgDRERERERkQ2xv69ZiYiIiIiIrIDJEREREREREZgcERERERERAWByREREREREBIDJEREREREREQAmR0RERERERACYHBEREREREQFgckRERERERASAyREREREREREAJkdEREREREQAmBwREREREREBYHJEREREREQEgMkRERERERERACZHREREREREAJgcERERERERAWByREREREREBIDJEREREREREQDg/wOttAoTFG6dpQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Condition\n", "a = 1.0\n", "\n", "t_target = 1.2\n", "cfl = 0.5\n", "\n", "# Make grid\n", "nx = 50\n", "x = np.linspace(-1, 1, nx+1)\n", "dx = np.diff(x)[0]\n", "xc = x[:-1] + 0.5*dx \n", "\n", "# Solution and flux array\n", "u = np.empty(nx+2)\n", "f = np.empty(nx+1)\n", "\n", "# Initialize\n", "u[1:-1] = np.sin(np.pi*xc)\n", "\n", "# Time step\n", "dt = cfl * dx / abs(a)\n", "\n", "# Calculation\n", "t = 0\n", "while abs(t - t_target) > 1e-8:\n", " # Adjust time step to reach target time\n", " dt = min(dt, t_target - t)\n", " \n", " # Periodic BC\n", " bc_periodic(u)\n", " \n", " # Compute Flux\n", " #f[:] = unstable_v1(u[:-1], u[1:], a)\n", " unstable(nx, u, f, a)\n", " \n", " # Update solution and time\n", " u[1:-1] -= dt/dx * (f[1:] - f[:-1])\n", " t += dt\n", "\n", "# Exact solution\n", "u_exact = np.sin(np.pi*(xc - a*t))\n", "\n", "# Error (L2)\n", "err = np.sqrt(np.sum((u[1:-1] - u_exact)**2)/len(u_exact))\n", "\n", "plt.plot(xc, u_exact)\n", "plt.plot(xc, u[1:-1])\n", "print(err)" ] }, { "cell_type": "markdown", "id": "da1d14d1", "metadata": {}, "source": [ "## 실습\n", "- Unstable, Upwind 기법으로 위 문제를 격자점을 달리하면서 해석하시오.\n", " * 격자 개수 ($nx=50, 100, 200, 400$)를 다르게 하면서 오차의 변화를 확인하시오.\n", "\n", "- 아래 초기 조건에 대해서 Tranparent 경계 조건이고 $t=0.5$ 일 때 유한체적법으로 계산하라\n", " * 격자 개수 ($nx=50, 100, 200, 400$)를 다르게 하면서 오차의 변화를 확인하시오.\n", "\n", "$$\n", "u(x,0) = \\left \\{\n", "\\begin{array}{cc} \n", "1 & x \\ge 0 \\\\\n", "-1 & else \n", "\\end{array}\n", "\\right .\n", "\\approx -\\tanh(10^8 x)\n", "$$\n", "\n", "- (Optional) 시간차분을 SSP-RK3 기법을 적용해서 해석하시오.\n", "\n", "$$\n", "\\begin{align}\n", "y^{(1)} &= y_n + \\Delta tf(y) \\\\\n", "y^{(2)} &= \\frac{3}{4} y_n + \\frac{1}{4} y^{(1)} + \\frac{1}{4} \\Delta t f(y^{(1)}) \\\\\n", "y^{n+1} &= \\frac{1}{3} y_n + \\frac{2}{3} y^{(2)} + \\frac{2}{3} \\Delta t f(y^{(2)})\n", "\\end{align}\n", "$$" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.2" } }, "nbformat": 4, "nbformat_minor": 5 }